{ "cells": [ { "cell_type": "markdown", "id": "f4ccfb71", "metadata": {}, "source": [ "# Parallelizing Multiple Grid Cells on a High-Performance Computing Cluster" ] }, { "cell_type": "markdown", "id": "1f35a372", "metadata": {}, "source": [ "Building off the previous tutorial, this notebook demonstrates how to use the [Dask PBSCluster](https://jobqueue.dask.org/en/latest/generated/dask_jobqueue.PBSCluster.html) object to parallelize MUSICA simulations across HPC systems. While MUSICA is locally efficient for simulations up to around 10,000 grid cells, scaling to larger domains can benefit from parallelizing grid cell calculations to improve runtime performance. This tutorial walks through best practices for setting up and running parallel MUSICA workflows, with concrete examples and reference scaling tests performed on [NCAR’s Casper HPC system](https://ncar-hpc-docs.readthedocs.io/en/latest/compute-systems/casper/)." ] }, { "cell_type": "markdown", "id": "3adde55e", "metadata": {}, "source": [ "## 1. Importing Libraries" ] }, { "cell_type": "markdown", "id": "35845be0", "metadata": {}, "source": [ "In addition to libraries previously used throughout MUSICA tutorials, this tutorial uses Dask. Note that if you'd like to visualize Dask graphs, you will also need [Graphviz](https://graphviz.org) installed." ] }, { "cell_type": "code", "execution_count": null, "id": "47021626", "metadata": {}, "outputs": [], "source": [ "#import libraries\n", "import musica\n", "import musica.mechanism_configuration as mc\n", "import matplotlib.pyplot as plt\n", "import pandas as pd\n", "import numpy as np\n", "from dask import delayed, compute\n", "from dask.distributed import Client\n", "from dask_jobqueue import PBSCluster\n", "import numpy as np\n", "import time\n", "from scipy.stats import qmc\n", "import seaborn as sns" ] }, { "cell_type": "markdown", "id": "49c68e4d-d477-447e-83fc-08008147e478", "metadata": {}, "source": [ "## 2. Dask Cluster Set up" ] }, { "cell_type": "markdown", "id": "95d2d7b8", "metadata": {}, "source": [ "We first need to set up a Dask Cluster object. In this tutorial, we use the PBSCluster class since our HPC system uses a PBS-based scheduler, but Dask also provides an equivalent [SLURMCluster](https://jobqueue.dask.org/en/latest/generated/dask_jobqueue.SLURMCluster.html) class for SLURM-based systems. When initializing the cluster, you’ll notice it accepts many arguments that may look familiar from your system’s job scripts such as requested memory, number of cores, and walltime. Keep in mind that these values should be adapted to fit your particular workload and system constraints. As a general guideline, we find MultiGrid cell simulations under ~10,000 cells to run comfortably with about 8 GB of memory, while larger simulations ranging from 100,000 to 1,000,000 grid cells may need closer to 15 GB to run efficiently. It can be helpful to initialize the PBSCluster with extra memory as done below (10 GB)." ] }, { "cell_type": "code", "execution_count": null, "id": "edc588b5-6a65-48f2-b3a6-437bcdf066c5", "metadata": {}, "outputs": [], "source": [ "#casper\n", "cluster = PBSCluster(\n", " job_name = 'dask-test',\n", " cores = 1,\n", " memory = '10GiB',\n", " processes = 1,\n", " local_directory = '/local_scratch/pbs.$PBS_JOBID/dask/spill',\n", " resource_spec = 'select=1:ncpus=1:mem=10GB', #memory and resource especially memory should match\n", " queue = 'casper',\n", " walltime = '50:00',\n", " interface = 'ext'\n", ")" ] }, { "cell_type": "markdown", "id": "bb06180d", "metadata": {}, "source": [ "Prior to running your simulation, it can be helfpul to check the active Dask PBS configuration and resulting job scrip that will be used for your Dask workers." ] }, { "cell_type": "code", "execution_count": null, "id": "8b7564e9-2401-489d-a09e-9915a26ddf26", "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "{'name': 'dask-worker',\n", " 'cores': None,\n", " 'memory': None,\n", " 'processes': None,\n", " 'python': None,\n", " 'interface': None,\n", " 'death-timeout': 60,\n", " 'local-directory': None,\n", " 'shared-temp-directory': None,\n", " 'extra': None,\n", " 'worker-command': 'distributed.cli.dask_worker',\n", " 'worker-extra-args': [],\n", " 'shebang': '#!/usr/bin/env bash',\n", " 'queue': None,\n", " 'account': None,\n", " 'walltime': '00:30:00',\n", " 'env-extra': None,\n", " 'job-script-prologue': [],\n", " 'resource-spec': None,\n", " 'job-extra': None,\n", " 'job-extra-directives': [],\n", " 'job-directives-skip': [],\n", " 'log-directory': None,\n", " 'scheduler-options': {}}" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#view configuration file(s) within Python\n", "from dask import config\n", "config.refresh()\n", "config.get('jobqueue.pbs')" ] }, { "cell_type": "code", "execution_count": 4, "id": "5a02e45d-7e69-4cc6-8ffb-47f49d52a2d5", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "#!/usr/bin/env bash\n", "\n", "#PBS -N dask-test\n", "#PBS -q casper\n", "#PBS -A NTDD0005\n", "#PBS -l select=1:ncpus=1:mem=10GB\n", "#PBS -l walltime=50:00\n", "\n", "/glade/work/apak/conda-envs/musicbox/bin/python -m distributed.cli.dask_worker tcp://128.117.208.119:36453 --name dummy-name --nthreads 1 --memory-limit 10.00GiB --nanny --death-timeout 60 --local-directory /local_scratch/pbs.$PBS_JOBID/dask/spill --interface ext\n", "\n" ] } ], "source": [ "print(cluster.job_script())" ] }, { "cell_type": "markdown", "id": "4bd22360", "metadata": {}, "source": [ "As in the [previous tutorial](4.%20local_parallelization.ipynb), the Dask Cluster provides a convenient and interactive dashboard to visualize your parallelization work." ] }, { "cell_type": "code", "execution_count": 5, "id": "9d16e1f9-608c-4c5e-84ca-83a118886299", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "
\n", "
\n", "

Client

\n", "

Client-05c11d79-6197-11f0-9aeb-ac1f6bab1e7a

\n", " \n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", "
Connection method: Cluster objectCluster type: dask_jobqueue.PBSCluster
\n", " Dashboard: https://jupyterhub.hpc.ucar.edu/stable/user/apak/proxy/8787/status\n", "
\n", "\n", " \n", "\n", " \n", "
\n", "

Cluster Info

\n", "
\n", "
\n", "
\n", "
\n", "

PBSCluster

\n", "

0e43aec4

\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
\n", " Dashboard: https://jupyterhub.hpc.ucar.edu/stable/user/apak/proxy/8787/status\n", " \n", " Workers: 0\n", "
\n", " Total threads: 0\n", " \n", " Total memory: 0 B\n", "
\n", "\n", "
\n", " \n", "

Scheduler Info

\n", "
\n", "\n", "
\n", "
\n", "
\n", "
\n", "

Scheduler

\n", "

Scheduler-31c8add4-0019-4525-a08f-f35e07e0a301

\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
\n", " Comm: tcp://128.117.208.119:36453\n", " \n", " Workers: 0 \n", "
\n", " Dashboard: https://jupyterhub.hpc.ucar.edu/stable/user/apak/proxy/8787/status\n", " \n", " Total threads: 0\n", "
\n", " Started: Just now\n", " \n", " Total memory: 0 B\n", "
\n", "
\n", "
\n", "\n", "
\n", " \n", "

Workers

\n", "
\n", "\n", " \n", "\n", "
\n", "
\n", "\n", "
\n", "
\n", "
\n", "
\n", " \n", "\n", "
\n", "
" ], "text/plain": [ "" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "client = Client(cluster)\n", "client" ] }, { "cell_type": "markdown", "id": "1326c7c1", "metadata": {}, "source": [ "After your cluster is created, it needs to be scaled to a certain number of Dask workers. For this tutorial, we have used between 1-4 workers and the results of their performance are included below in section 7. Note that due to the nature of the MUSICA code not releasing Python's Global Interpreter Lock, it was not found to be particularly helpful for performance to increase threads." ] }, { "cell_type": "code", "execution_count": null, "id": "4dbfb7a5", "metadata": {}, "outputs": [], "source": [ "cluster.scale(2)\n", "client.wait_for_workers(2) # wait to launch jobs until all workers needed are available" ] }, { "cell_type": "code", "execution_count": 8, "id": "6db0af64-149b-4108-ac1e-a8d3b609a206", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'PBSCluster-1': ,\n", " 'PBSCluster-0': }" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# See the workers from the cluster object\n", "cluster.workers" ] }, { "cell_type": "code", "execution_count": 9, "id": "0b166006-757d-4bfb-a040-09254ddbc32a", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " Req'd Req'd Elap\n", "Job ID Username Queue Jobname SessID NDS TSK Memory Time S Time\n", "--------------- -------- -------- ---------- ------ --- --- ------ ----- - -----\n", "5630216.casper* apak jhublog* cr-login-* 72033 1 1 4gb 720:0 R 00:01\n", "5630218.casper* apak htc dask-test 103102 1 1 10gb 00:50 R 00:00\n", "5630219.casper* apak htc dask-test 103114 1 1 10gb 00:50 R 00:00\n" ] } ], "source": [ "# See the workers in the job scheduler\n", "!qstat -u $USER" ] }, { "cell_type": "markdown", "id": "578aadfe-0b44-419f-9b31-2af20c41fbdb", "metadata": {}, "source": [ "## 3. Setting up Grid Cells" ] }, { "cell_type": "markdown", "id": "ffdab444", "metadata": {}, "source": [ "We find parallelization for MUSICA simulations to increase performance on system sizes beyond ~10,000 grid cells. However, to keep simulation sizes sand batching reasonable, we use a 10,000 grid cell simulation here as an example. As in the local parallelization notebook, we first define the number of grid cells and set their initial conditions before initializing MUSICA chemistry objects." ] }, { "cell_type": "code", "execution_count": 87, "id": "bb849961-0b7d-4d76-b82a-48f5bc67cc39", "metadata": {}, "outputs": [], "source": [ "num_grid_cells = 10000" ] }, { "cell_type": "code", "execution_count": 28, "id": "32f84c85-f371-48ca-8d9b-70fec49c7dd5", "metadata": {}, "outputs": [], "source": [ "ndim = 5\n", "nsamples = num_grid_cells\n", "\n", "# Create a Latin Hypercube sampler in the unit hypercube\n", "sampler = qmc.LatinHypercube(d=ndim)\n", "\n", "# Generate samples\n", "sample = sampler.random(n=nsamples)\n", "\n", "# Define bounds for each dimension\n", "l_bounds = [275, 100753.3, 0, 0, 0] # Lower bounds\n", "u_bounds = [325, 101753.3, 10, 10, 10] # Upper bounds\n", "\n", "# Scale the samples to the defined bounds\n", "sample_scaled = qmc.scale(sample, l_bounds, u_bounds)" ] }, { "cell_type": "code", "execution_count": 86, "id": "7920bc07-b693-4837-9fa7-94d48da10206", "metadata": {}, "outputs": [], "source": [ "temperatures = sample_scaled[:, 0]\n", "pressures = sample_scaled[:, 1]\n", "concentrations = {\n", " \"A\": [],\n", " \"B\": [],\n", " \"C\": []\n", "}\n", "concentrations[\"A\"] = sample_scaled[:, 2]\n", "concentrations[\"B\"] = sample_scaled[:, 3]\n", "concentrations[\"C\"] = sample_scaled[:, 4]\n", "\n", "concentrations_solved = []\n", "time_step_length = 1\n", "sim_length = 60\n", "curr_time = 0" ] }, { "cell_type": "markdown", "id": "aaa3e946", "metadata": {}, "source": [ "## 4. Creating a Delayed Function for Dask" ] }, { "cell_type": "markdown", "id": "54f6bc1c", "metadata": {}, "source": [ "The following delayed function is the same as the one created for the previous [Local Parallelization Tutorial](4.%20local_parallelization.ipynb). However, here it is used to solve one grid cell at a time on an HPC system. Due to the low computational cost of solving single grid cells in MUSICA, this method is not recommended and is only used for scaling comparisons." ] }, { "cell_type": "code", "execution_count": null, "id": "b7946d7a", "metadata": {}, "outputs": [], "source": [ "@delayed\n", "def solve_one_cell(cell_index,temperatures,pressures,concentrations, sim_length, time_step):\n", "\n", " # Define the system\n", "\n", " A = mc.Species(name=\"A\") # Create each of the species with their respective names\n", " B = mc.Species(name=\"B\")\n", " C = mc.Species(name=\"C\")\n", " species = [A, B, C] # Bundle the species into a list\n", " gas = mc.Phase(name=\"gas\", species=species) # Create a gas phase object containing the species\n", "\n", " r1 = mc.Arrhenius( # Create the reactions with their name, constants, reactants, products, and phase\n", " name=\"A_to_B\",\n", " A=4.0e-3, # Pre-exponential factor\n", " C=50, # Activation energy (units assumed to be K)\n", " reactants=[A],\n", " products=[B],\n", " gas_phase=gas\n", " )\n", "\n", " r2 = mc.Arrhenius(\n", " name=\"B_to_C\",\n", " A=4.0e-3,\n", " C=50, \n", " reactants=[B],\n", " products=[C],\n", " gas_phase=gas\n", " )\n", "\n", " mechanism = mc.Mechanism( # Define the mechanism which contains a name, the species, the phases, and reactions\n", " name=\"musica_micm_example\",\n", " species=species,\n", " phases=[gas],\n", " reactions=[r1, r2]\n", ")\n", "\n", "\n", " #create the solver\n", " solver = musica.MICM(mechanism=mechanism, solver_type=musica.SolverType.rosenbrock_standard_order)\n", "\n", " #create the state\n", " state = solver.create_state(1)\n", " state.set_conditions(temperatures[cell_index],pressures[cell_index])\n", " cur_concentrations = {key: value[cell_index] for key, value in concentrations.items()}\n", " state.set_concentrations(cur_concentrations)\n", "\n", " time = 0.0\n", " result = []\n", " track_time = []\n", " while time <= sim_length:\n", " solver.solve(state, time)\n", " result.append(state.get_concentrations().copy())\n", " track_time.append(time)\n", " time += time_step\n", "\n", " return {\n", " \"times\": np.array(track_time),\n", " \"concentrations\": np.stack(result)\n", " }\n" ] }, { "cell_type": "code", "execution_count": null, "id": "a4e44461-d846-40f6-a0a0-def5f639e6fd", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "parallel 10000 cell finished in 60.77 seconds\n" ] } ], "source": [ "start = time.time()\n", "tasks = [solve_one_cell(i, temperatures,pressures,concentrations, sim_length, time_step_length) for i in range(num_grid_cells)]\n", "results = compute(*tasks)\n", "elapsed = time.time() - start\n", "print(f\"parallel 10000 cell finished in {elapsed:.2f} seconds\")" ] }, { "cell_type": "markdown", "id": "a7df1a69-1d3d-4bf2-a40e-021442ed5e90", "metadata": {}, "source": [ "## 5. Dask With Batching" ] }, { "cell_type": "markdown", "id": "9178f809", "metadata": {}, "source": [ "Since MUSICA already computes individual grid cells efficiently, the main performance gain from Dask comes from batching—grouping multiple grid cells together so each CPU core processes several cells at once. This allows us to fully use multiple cores while reducing overhead and improving throughput on large simulations." ] }, { "cell_type": "code", "execution_count": 49, "id": "2f9333c0-532a-4774-83f5-eca7c8a4ca07", "metadata": {}, "outputs": [], "source": [ "@delayed\n", "def solve_batch(start_idx, end_idx, temperatures, pressures, concentrations, sim_length, time_step):\n", " batch_results = []\n", " air_densities = [] #track for later visualization\n", " for cell_index in range(start_idx, end_idx):\n", " # build mechanism as before\n", " A = mc.Species(name=\"A\")\n", " B = mc.Species(name=\"B\")\n", " C = mc.Species(name=\"C\")\n", " species = [A, B, C]\n", " gas = mc.Phase(name=\"gas\", species=species)\n", "\n", " r1 = mc.Arrhenius(name=\"A_to_B\", A=4.0e-3, C=50, reactants=[A], products=[B], gas_phase=gas)\n", " r2 = mc.Arrhenius(name=\"B_to_C\", A=4.0e-3, C=50, reactants=[B], products=[C], gas_phase=gas)\n", "\n", " mechanism = mc.Mechanism(\n", " name=\"musica_micm_example\",\n", " species=species,\n", " phases=[gas],\n", " reactions=[r1, r2]\n", " )\n", " \n", " solver = musica.MICM(mechanism=mechanism, solver_type=musica.SolverType.rosenbrock_standard_order)\n", " state = solver.create_state(1)\n", " state.set_conditions(temperatures[cell_index], pressures[cell_index])\n", " air_density = state.get_conditions()['air_density']\n", " air_densities.append(air_density)\n", " cur_concentrations = {key: value[cell_index] for key, value in concentrations.items()}\n", " state.set_concentrations(cur_concentrations)\n", "\n", " time = 0.0\n", " result = []\n", " while time <= sim_length:\n", " solver.solve(state, time)\n", " result.append(state.get_concentrations().copy())\n", " time += time_step\n", "\n", " batch_results.append(np.stack(result))\n", "\n", " return np.stack(batch_results), np.array(air_densities) # shape: (num_cells_in_batch, num_timesteps, num_species)\n" ] }, { "cell_type": "code", "execution_count": null, "id": "fb85f229-4b1d-405e-b0bd-1c9e07c36a4d", "metadata": {}, "outputs": [], "source": [ "batch_size = 100 #number of grid cells solved on a single worker\n", "\n", "tasks = []\n", "for start_idx in range(0, num_grid_cells, batch_size):\n", " end_idx = min(start_idx + batch_size, num_grid_cells)\n", " task = solve_batch(\n", " start_idx, end_idx,\n", " temperatures, pressures, concentrations,\n", " sim_length, time_step_length\n", " )\n", " tasks.append(task)\n" ] }, { "cell_type": "markdown", "id": "f980ee71", "metadata": {}, "source": [ "Upon solving this multiple grid cell calculation in batches, we see that it is much more efficient than it's individually run counter part in section 4." ] }, { "cell_type": "code", "execution_count": 51, "id": "0b6e5091-e5b2-4f96-9924-13e5528514c4", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "parallel 100000 cell batched finished in 9.87 seconds\n" ] } ], "source": [ "start = time.time()\n", "results_and_densities = compute(*tasks)\n", "elapsed = time.time() - start\n", "print(f\"parallel 100000 cell batched finished in {elapsed:.2f} seconds\")" ] }, { "cell_type": "markdown", "id": "c1a39625", "metadata": {}, "source": [ "## 6. Visualizing Results" ] }, { "cell_type": "markdown", "id": "f31aac4b", "metadata": {}, "source": [ "Similar to the [Latin Hypercube Sampling Tutorial](2.%20hypercube.ipynb), the following code prepares the results of the parallelized simulations into a dataframe that gives each time step of each grid cell its own row. The formatting is slightly different due to the Dask calculation returning arrays rather than lists and dictionaries directly but the overall organization is the same." ] }, { "cell_type": "code", "execution_count": null, "id": "b8ede01f-2e5d-4573-a75b-63f045db5ef2", "metadata": {}, "outputs": [], "source": [ "#split results and air densities back into their own arrays\n", "\n", "species_names = ['A', 'B', 'C']\n", "num_time_steps = sim_length // time_step_length + 1\n", "\n", "all_results = []\n", "all_air_densities = []\n", "\n", "for batch_result, air_densities in results_and_densities:\n", " all_results.append(batch_result) # shape: (batch_size, num_timesteps, num_species)\n", " all_air_densities.append(air_densities) # shape: (batch_size,)\n", "\n", "# Concatenate over grid cells\n", "all_results = np.concatenate(all_results, axis=0) # shape: (num_grid_cells, num_timesteps, num_species)\n", "all_air_densities = np.concatenate(all_air_densities, axis=0) # shape: (num_grid_cells,)" ] }, { "cell_type": "code", "execution_count": null, "id": "faa607d9-3e44-4e9a-a149-fc298cda680d", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
time.sENV.temperature.KENV.pressure.PaENV.air number density.mol m-3CONC.A.mol m-3CONC.B.mol m-3CONC.C.mol m-3
00301.626773101259.51656140.3767899.7681337.1421468.698319
10301.626773101259.51656140.3767895.7807539.5478878.133570
20301.626773101259.51656140.3767894.1839140.8645720.116974
30301.626773101259.51656140.3767890.3589648.1262276.105201
40301.626773101259.51656140.3767895.2338864.2997446.196699
........................
60999560301.626773101259.51656140.3767890.0012290.01145212.930998
60999660301.626773101259.51656140.3767890.0004210.00493318.148737
60999760301.626773101259.51656140.3767890.0001060.0020436.835295
60999860301.626773101259.51656140.3767890.0003700.00436513.947568
60999960301.626773101259.51656140.3767890.0005260.00477912.959798
\n", "

610000 rows × 7 columns

\n", "
" ], "text/plain": [ " time.s ENV.temperature.K ENV.pressure.Pa \\\n", "0 0 301.626773 101259.516561 \n", "1 0 301.626773 101259.516561 \n", "2 0 301.626773 101259.516561 \n", "3 0 301.626773 101259.516561 \n", "4 0 301.626773 101259.516561 \n", "... ... ... ... \n", "609995 60 301.626773 101259.516561 \n", "609996 60 301.626773 101259.516561 \n", "609997 60 301.626773 101259.516561 \n", "609998 60 301.626773 101259.516561 \n", "609999 60 301.626773 101259.516561 \n", "\n", " ENV.air number density.mol m-3 CONC.A.mol m-3 CONC.B.mol m-3 \\\n", "0 40.376789 9.768133 7.142146 \n", "1 40.376789 5.780753 9.547887 \n", "2 40.376789 4.183914 0.864572 \n", "3 40.376789 0.358964 8.126227 \n", "4 40.376789 5.233886 4.299744 \n", "... ... ... ... \n", "609995 40.376789 0.001229 0.011452 \n", "609996 40.376789 0.000421 0.004933 \n", "609997 40.376789 0.000106 0.002043 \n", "609998 40.376789 0.000370 0.004365 \n", "609999 40.376789 0.000526 0.004779 \n", "\n", " CONC.C.mol m-3 \n", "0 8.698319 \n", "1 8.133570 \n", "2 0.116974 \n", "3 6.105201 \n", "4 6.196699 \n", "... ... \n", "609995 12.930998 \n", "609996 18.148737 \n", "609997 6.835295 \n", "609998 13.947568 \n", "609999 12.959798 \n", "\n", "[610000 rows x 7 columns]" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "concentrations_expanded = []\n", "time = []\n", "\n", "for t in range(num_time_steps):\n", " current_time = t * time_step_length\n", " for g in range(num_grid_cells):\n", "\n", " # all_results[g][t] is dict with species concentrations\n", "\n", " # Extract the float value from each species list\n", " concentrations_expanded.append({cur_time: v[0] if isinstance(v, (list, np.ndarray)) and len(v) == 1 else v for k, v in all_results[g][t].items()})\n", "\n", " time.append(current_time)\n", "\n", "df_expanded = pd.DataFrame(concentrations_expanded)\n", "df_expanded = df_expanded.rename(columns={\n", " 'A': 'CONC.A.mol m-3', \n", " 'B': 'CONC.B.mol m-3', \n", " 'C': 'CONC.C.mol m-3'\n", "})\n", "df_expanded['time.s'] = time\n", "\n", "# Add environment columns same as before:\n", "num_rows = num_time_steps * num_grid_cells\n", "df_expanded['ENV.temperature.K'] = np.repeat(temperatures[0], num_rows)\n", "df_expanded['ENV.pressure.Pa'] = np.repeat(pressures[0], num_rows)\n", "df_expanded['ENV.air number density.mol m-3'] = np.repeat(all_air_densities[0], num_rows)\n", "\n", "df_expanded = df_expanded[[\n", " 'time.s', \n", " 'ENV.temperature.K', \n", " 'ENV.pressure.Pa', \n", " 'ENV.air number density.mol m-3', \n", " 'CONC.A.mol m-3', \n", " 'CONC.B.mol m-3', \n", " 'CONC.C.mol m-3'\n", "]]\n", "\n", "display(df_expanded)\n" ] }, { "cell_type": "markdown", "id": "8d11d8ea", "metadata": {}, "source": [ "Also as in previous tutorials, the results here are visualized with Seaborn to include a 95% confidence interval (CI) resulting from all grid cell results. Note here that due to this tutorial notebook having 10x the number of total grid cells along with the random nature of Latin Hypercube Sampling, the CI has started to converge." ] }, { "cell_type": "code", "execution_count": 91, "id": "78525f6b-0f4a-4a2e-825c-6c230930e8f3", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjIAAAHHCAYAAACle7JuAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAAn/BJREFUeJzs3Xd8VFX6x/HPzCSZ9N4LJIGEFHpvIfQqgg1RV8AuKmJHdFfEhQUsWLGufVHQn6CuiyAg0pUS6S30GgLpdTLl/P6YZCQkQBISJuV567ySuXPLM8Mk8825556jUUophBBCCCEaIK29CxBCCCGEqCkJMkIIIYRosCTICCGEEKLBkiAjhBBCiAZLgowQQgghGiwJMkIIIYRosCTICCGEEKLBkiAjhBBCiAZLgowQQgghGiwJMkKIBuW3335Do9Hw22+/2buUKjl69CgajYbPPvusyuu++uqrdV9YE9O3b1/69u1r7zJEHZAgI6rt3XffRaPR0K1bN3uXIuxoz549vPjiixw9erRO9v/uu+9W6cO/IVqyZAkvvvhine3/7NmzPPXUU8TFxeHq6oqbmxudOnVixowZZGdn29br27cvrVu3rrM6rrW6fk+K+snB3gWIhmf+/PlERkayadMmDh48SMuWLe1dkrCDPXv2MH36dPr27UtkZGSt7//dd9/F39+fCRMmlFvep08fioqKcHJyqvVj1oXmzZtTVFSEo6OjbdmSJUuYN29enYSZzZs3M3z4cPLz8/nb3/5Gp06dANiyZQuzZ89mzZo1/PLLL7V+3Prgcu/JxvqchQQZUU1Hjhxhw4YNLFq0iAceeID58+czbdq0a1qDxWKhpKQEZ2fna3pcUXNKKYqLi3FxcbnqfWm12gb1b6/RaK5ZvdnZ2dxwww3odDr+/PNP4uLiyj0+c+ZMPvroo2tSS10pKCjAzc2t2ts1lOArakAJUQ3//Oc/lY+PjzIYDGrixIkqJibG9lhJSYny8fFREyZMqLBdTk6O0uv16sknn7QtKy4uVi+88IJq0aKFcnJyUuHh4erpp59WxcXF5bYF1MMPP6z+85//qISEBOXg4KAWL16slFLqlVdeUT169FC+vr7K2dlZdezYUX377bcVjl9YWKgmTZqk/Pz8lLu7uxo5cqQ6efKkAtS0adPKrXvy5El11113qcDAQOXk5KQSEhLUxx9/XOXX6Msvv1RdunRRLi4uytvbWyUlJally5aVW2fevHkqISFBOTk5qZCQEPXQQw+prKyscuskJyerxMREtXv3btW3b1/l4uKiQkND1Zw5cyocs6ioSE2bNk3FxMQovV6vgoOD1Q033KAOHjxoW8dsNqvXX39dJSQkKL1erwIDA9X999+vMjMzy+2refPmasSIEWrt2rWqS5cuSq/Xq6ioKPX555/b1vn0008VUOG2atWqcvtYunSp6tSpk9Lr9er1119XSin1ySefqH79+qmAgADl5OSk4uPj1bvvvluhhov3nZycrJRSatWqVeWOVeabb75RHTt2VM7OzsrPz0/dcccd6uTJk+XWGT9+vHJzc1MnT55Uo0aNUm5ubsrf3189+eSTymQyVfrvWebxxx9Xvr6+ymKx2JY98sgjClBvvvmmbVlaWpoCbM/pyJEjClCffvqprYbKXrsL133llVfUBx98oKKjo5WTk5Pq3Lmz2rRp02XrU0qp2bNnK0DNnz//iusq9dd7rCqu9Pq+8sorClBHjx6tsO2zzz6rHB0dy73Xfv/9dzVkyBDl6empXFxcVJ8+fdS6devKbTdt2jQFqN27d6vbbrtNeXt7q/bt21da35Xek8nJybb3kFJ/vY8WLlyoXnzxRRUaGqrc3d3VTTfdpLKzs1VxcbGaPHmyCggIUG5ubmrChAkVfjcpZf15L3tdfHx81K233qqOHz9epddU1A4JMqJa4uLi1D333KOUUmrNmjUKKPcL9u6771be3t7KYDCU2+7zzz9XgNq8ebNSyvqhOnjwYOXq6qoee+wx9cEHH6hHHnlEOTg4qFGjRpXbFlDx8fEqICBATZ8+Xc2bN0/9+eefSimlwsPD1UMPPaTeeecdNXfuXNW1a1cFqJ9++qncPsaMGaMAdeedd6p58+apMWPGqHbt2lUIMmlpaSo8PFxFRESol156Sb333nvq+uuvV4Dtg/hyXnzxRQWonj17qldeeUW9+eab6vbbb1dTpkyxrVP2y3ngwIHq7bffVo888ojS6XSqS5cuqqSkxLZecnKyCg0NVREREWry5Mnq3XffVf3791eAWrJkiW09k8mkBgwYoAA1duxY9c4776hZs2ap/v37q++//9623r333qscHBzUfffdp95//301ZcoU5ebmVuG4zZs3V61atVJBQUHqueeeU++8847q2LGj0mg0ateuXUoppQ4dOqQeffRRBajnnntOffnll+rLL79UaWlptn20bNlS+fj4qGeffVa9//77tg+ULl26qAkTJqjXX39dvf3222rw4MEKUO+8846thsWLF6vw8HAVFxdn2/cvv/yilKo8yJR9iHXp0kW9/vrr6tlnn1UuLi4qMjKyXEAcP368cnZ2VomJieruu+9W7733nrrpppvKBY9LWbRokQLUzp07bcvatWuntFqtuvnmm23Lvv32WwXYXquLg8yGDRvUoEGDFGB7bl9++WW5dTt06KBatmyp5syZo15++WXl7++vwsPDy/07VaZnz57KxcWlws/fpVQ1yFTl9T127JjSaDTq5ZdfrrB9dHS0GjFihO3+ypUrlZOTk+rRo4d67bXX1Ouvv67atm2rnJyc1B9//GFbr+xnJSEhQY0aNUq9++67at68eZXWeKX35KWCTPv27VWPHj3UW2+9pR599FGl0WjU2LFj1e23366GDRum5s2bp+68804FqOnTp5c75owZM5RGo1G33nqrevfdd9X06dOVv79/hfedqFsSZESVbdmyRQFq+fLlSimlLBaLCg8PV5MnT7ats2zZMgWo//73v+W2HT58uIqOjrbd//LLL5VWq1Vr164tt97777+vALV+/XrbMkBptVq1e/fuCjUVFhaWu19SUqJat26t+vfvb1u2detWBajHHnus3LoTJkyoEGTuueceFRISos6fP19u3bFjxyovL68Kx7tQamqq0mq16oYbblBms7ncY2V/xaenpysnJyc1ePDgcuu88847ClCffPKJbVlycrIC1BdffGFbZjAYVHBwsLrppptsyz755BMFqLlz51aoqey4a9eurfQv9aVLl1ZYXtYasmbNGtuy9PT0Ci1qZR/YF7eMXLiPpUuXVnisstdwyJAh5d4fSimVmJhY7oOnzMVBpqSkRAUGBqrWrVuroqIi23o//fSTAtQLL7xgW1bWGvLSSy+V22eHDh1Up06dKhzrQunp6eUCT3Z2ttJqteqWW25RQUFBtvUeffTRci03FwcZpZR6+OGHba0wFypb18/Pr1zrxQ8//FDpz9XFfHx8VLt27S67zoWqEmSq8/r26NGjwuu4adOmcu9ji8WiYmJi1JAhQ8q1bhUWFqqoqCg1aNAg27KyIHPbbbdV6flc7j15qSDTunXrcgHxtttuUxqNRg0bNqzc9j169FDNmze33T969KjS6XRq5syZ5dbbuXOncnBwqLBc1B25aklU2fz58wkKCqJfv36A9dz/rbfeyoIFCzCbzQD0798ff39/Fi5caNsuKyuL5cuXc+utt9qWffvtt8THxxMXF8f58+dtt/79+wOwatWqcsdOTk4mISGhQk0X9rnIysoiJyeHpKQkUlJSbMuXLl0KwEMPPVRu20mTJpW7r5Tiu+++Y+TIkSilytU1ZMgQcnJyyu33Yt9//z0Wi4UXXngBrbb8j5ZGowFgxYoVlJSU8Nhjj5Vb57777sPT05P//e9/5bZzd3fnb3/7m+2+k5MTXbt25fDhw7Zl3333Hf7+/hWez4XH/fbbb/Hy8mLQoEHlnlenTp1wd3ev8HonJCSQlJRkux8QEECrVq3KHfdKoqKiGDJkSIXlF/6b5eTkcP78eZKTkzl8+DA5OTlV3n+ZLVu2kJ6ezkMPPVSuL8qIESOIi4ur8JoCPPjgg+XuJyUlXfG5BQQEEBcXx5o1awBYv349Op2Op59+mrNnz5KamgrA2rVr6d27t+21r4lbb70VHx+fcvUBV6wxNzcXDw+PGh+3MtV5fW+99Va2bt3KoUOHbMsWLlyIXq9n1KhRAGzbto3U1FRuv/12MjIybO/FgoICBgwYwJo1a7BYLOVquPjfqzaNGzeuXEfsbt26oZTi7rvvLrdet27dOHHiBCaTCYBFixZhsVgYM2ZMuZ+p4OBgYmJiKvxMibojnX1FlZjNZhYsWEC/fv04cuSIbXm3bt147bXXWLlyJYMHD8bBwYGbbrqJr776CoPBgF6vZ9GiRRiNxnJBJjU1lb179xIQEFDp8dLT08vdj4qKqnS9n376iRkzZrBt2zYMBoNt+YUfIseOHUOr1VbYx8VXW507d47s7Gw+/PBDPvzwwyrVdaFDhw6h1WorDVwX1gLQqlWrcsudnJyIjo62PV4mPDy8wgeij48PO3bsKHfcVq1a4eBw6R/n1NRUcnJyCAwMrPTxi59Xs2bNKqzj4+NDVlbWJY9xsUv9m61fv55p06axceNGCgsLyz2Wk5ODl5dXlY8Bl35NAeLi4li3bl25Zc7OzhXed1V9bklJSSxZsgSwBpbOnTvTuXNnfH19Wbt2LUFBQWzfvp3bb7+9Ws/hYhe//mWh5ko1enp6kpeXd1XHvlh1Xt9bbrmFJ554goULF/Lcc8+hlOLbb79l2LBheHp6AtgC3/jx4y95zJycnHJB7lLvpdpw8Wtd9v6LiIiosNxisZCTk4Ofnx+pqakopYiJial0vxeGI1G3JMiIKvn11185c+YMCxYsYMGCBRUenz9/PoMHDwZg7NixfPDBB/z888+MHj2ab775hri4ONq1a2db32Kx0KZNG+bOnVvp8S7+JVLZ1S5r167l+uuvp0+fPrz77ruEhITg6OjIp59+yldffVXt51j2V+Df/va3S/6Sbdu2bbX3ezV0Ol2ly5VS1dqPxWIhMDCQ+fPnV/r4xR/stXHcyv7NDh06xIABA4iLi2Pu3LlERETg5OTEkiVLeP311yv8JV4XLvXcqqJ379589NFHHD58mLVr15KUlIRGo6F3796sXbuW0NBQLBZLudas2qzxSq9/XFwc27Zto6SkxC5X6YSGhpKUlMQ333zDc889x++//87x48eZM2eObZ2yf+NXXnmF9u3bV7ofd3f3cvdr42q3S7nUa32lfwOLxYJGo+Hnn3+udN2Ln4OoOxJkRJXMnz+fwMBA5s2bV+GxRYsWsXjxYt5//31cXFzo06cPISEhLFy4kN69e/Prr7/y/PPPl9umRYsWbN++nQEDBtS4Cf67777D2dmZZcuWodfrbcs//fTTcus1b94ci8XCkSNHyv31dPDgwXLrBQQE4OHhgdlsZuDAgdWup0WLFlgsFvbs2XPJX9DNmzcHYP/+/URHR9uWl5SUcOTIkRof948//sBoNF7yr8AWLVqwYsUKevXqVWsfCjX5d/vvf/+LwWDgxx9/LPeXcGXN8FXd/4WvadmpyTL79++3PV4bygLK8uXL2bx5M88++yxgHdvmvffeIzQ01Db43OVczWmnyxk5ciQbN27ku+++47bbbquVfVb39b311lt56KGH2L9/PwsXLsTV1ZWRI0faHm/RogVgbT2qyfv9curqda1MixYtUEoRFRVFbGzsNTuuqEj6yIgrKioqYtGiRVx33XXcfPPNFW6PPPIIeXl5/Pjjj4B1nI+bb76Z//73v3z55ZeYTKZyp5UAxowZw6lTpyod06KoqIiCgoIr1qXT6dBoNLb+OWAd4v37778vt15ZP41333233PK33367wv5uuukmvvvuO3bt2lXheOfOnbtsPaNHj0ar1fLSSy9VaFko+ytu4MCBODk58dZbb5X76/rjjz8mJyeHESNGXPYYlbnppps4f/4877zzToXHyo4xZswYzGYz//znPyusYzKZyo32WlVlY3lUZ9uyv1wvfO45OTkVwmfZ/quy786dOxMYGMj7779f7vTizz//zN69e2v0ml5KVFQUYWFhvP766xiNRnr16gVYA86hQ4f4v//7P7p3737Z03xQs9euKh588EFCQkJ48sknOXDgQIXH09PTmTFjRrX2Wd3X96abbkKn0/H111/z7bffct1115Ub96VTp060aNGCV199lfz8/ArHu9LP2eXU1etamRtvvBGdTsf06dMrtJQppcjIyKjzGoSVtMiIK/rxxx/Jy8vj+uuvr/Tx7t27ExAQwPz5822B5dZbb+Xtt99m2rRptGnThvj4+HLb3HnnnXzzzTc8+OCDrFq1il69emE2m9m3bx/ffPMNy5Yto3Pnzpeta8SIEcydO5ehQ4dy++23k56ezrx582jZsmW5PiSdOnXipptu4o033iAjI4Pu3buzevVq2y/6C/+Kmz17NqtWraJbt27cd999JCQkkJmZSUpKCitWrCAzM/OS9bRs2ZLnn3+ef/7znyQlJXHjjTei1+vZvHkzoaGhzJo1i4CAAKZOncr06dMZOnQo119/Pfv37+fdd9+lS5cu5Tr2VtW4ceP44osveOKJJ9i0aRNJSUkUFBSwYsUKHnroIUaNGkVycjIPPPAAs2bNYtu2bQwePBhHR0dSU1P59ttvefPNN7n55purddz27duj0+mYM2cOOTk56PV6+vfvf8l+OACDBw/GycmJkSNH8sADD5Cfn89HH31EYGAgZ86cKbdup06deO+995gxYwYtW7YkMDCwQosAWPsizJkzh7vuuovk5GRuu+02zp49y5tvvklkZCSPP/54tZ7XlSQlJbFgwQLatGlj68fRsWNH3NzcOHDgQJX6x5S12Dz66KMMGTIEnU7H2LFjr7o2Hx8fFi9ezPDhw2nfvn25kX1TUlL4+uuv6dGjR7X2Wd3XNzAwkH79+jF37lzy8vIq/BGj1Wr597//zbBhw0hMTOSuu+4iLCyMU6dOsWrVKjw9Pfnvf/9bo+dfk/dkTbVo0YIZM2YwdepUjh49yujRo/Hw8ODIkSMsXryY+++/n6eeeqrWjysqce0vlBINzciRI5Wzs7MqKCi45DoTJkxQjo6OtsuWLRaLioiIUICaMWNGpduUlJSo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FouKjo5WS5cuVVOmTFH33XffFZ6pta73339fjRgxQrm4uKi4uDi1YcMGlZqaqpKTk5Wrq6vq0aOHOnjwYLnt3n33XRUdHa0cHR1VbGys+uKLLyrsd/HixZc8bnJysnrkkUfU5MmTlbe3twoMDFQffvihys/PVxMmTFDu7u6qRYsWasmSJVd8Dhd7/PHHVe/evS/5+OXem1X9/K5Ri8xbb73Fzz//TFBQEG3atKFjx47lbkI0JdnF2YxfOp5T+adwdXClb3hfOgZ1ZEjUENwc3exdnhCVUkpRWGKyy01VcWaczMxMli5dysMPP4ybW8WfJW9vbwB++eUXMjIyeOqppyqsM3LkSGJjY/n666/LLe/VqxfXXXcdzz777FUd+1JWrVpFYWEhAwcO5G9/+xsLFiygoKDgstsA/POf/2TcuHFs27aNuLg4br/9dh544AGmTp3Kli1bUErxyCOP2NZfvHgxkydP5sknn2TXrl088MAD3HXXXaxateqKx7rQ559/jr+/P5s2bWLSpElMnDiRW265hZ49e5KSksLgwYO58847KSwsrPI+Dx48yNKlS0lOTq5WLdVVo56Ho0ePruUyhGiY8g35jF86nmN5x3DWOZMcnkz7wPYMiRyCp5PM7SXqryKjmYQXltnl2HteGoKr05U/fg4ePIhSiri4uMuud+DAAcA6eXFl4uLibOtcaNasWbRt25a1a9eSlJRUo2Nfyscff8zYsWPR6XS0bt2a6Ohovv322ysOJHvXXXcxZswYAKZMmUKPHj34xz/+wZAhQwCYPHkyd911l239V199lQkTJvDQQw8B8MQTT/D777/z6quv0q9fvyrX265dO/7+978DMHXqVGbPno2/vz/33XcfAC+88ALvvfceO3bsoHv37pfdV1n4MRgM3H///bz00ktVrqMmahRk6vx8lxANQKGxkAnLJnA45zBOOieSI5LpENiBYVHD8NLL1XtCXK2qttzUdP2EhATGjRvHs88+y/r1669qXxfKzs5m0aJFrFu3zrbsb3/7Gx9//PEVg0zbtm1t3wcFBQHQpk2bcsuKi4vJzc3F09OTvXv3cv/995fbR69evXjzzTerVfOFx9XpdPj5+VU4LmCbUiAxMdHWWTopKYmff/7Ztu7ChQvJy8tj+/btPP3007z66qs888wz1aqnOqocZJRSMpiSEKWKTcXcs+we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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sns.lineplot(data=df_expanded, x='time.s', y='CONC.A.mol m-3', errorbar=('ci', 95), err_kws={'alpha' : 0.4}, label='CONC.A.mol m-3')\n", "sns.lineplot(data=df_expanded, x='time.s', y='CONC.B.mol m-3', errorbar=('ci', 95), err_kws={'alpha' : 0.4}, label='CONC.B.mol m-3')\n", "sns.lineplot(data=df_expanded, x='time.s', y='CONC.C.mol m-3', errorbar=('ci', 95), err_kws={'alpha' : 0.4}, label='CONC.C.mol m-3')\n", "plt.title('Average concentration with CI over time')\n", "plt.ylabel('Concentration (mol m-3)')\n", "plt.xlabel('Time (s)')\n", "plt.legend(loc='center right')\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "30d81cbd", "metadata": {}, "source": [ "## 7. Scaling Tests on NCAR's Casper HPC System" ] }, { "cell_type": "markdown", "id": "33bed051", "metadata": {}, "source": [ "As a reference, the following visualizations use the dask_scaling_tests.csv located in this tutorials folder. These results summarize the scaling tests done on 10,000 and 100,000 grid cell calculations on NCAR's Casper HPC system with 1-4 workers and batch sizes of 1-1,000 each." ] }, { "cell_type": "markdown", "id": "964830df", "metadata": {}, "source": [ "Starting with the 10,000 grid cell system. It was found that the greates improvement in performance occurs with the use of at least 2 workers and at least some form of batching. Performance improvements tapered at about 4 workes and batch sizes beyond 100 grid cells per batch. It should be noted that, locally, this simulation takes on average 5 seconds to run. So it is not until the use of at least 3 workers with batching that we regain this performance. The initial slowdown reflects Dask’s overhead, and we emphasize that parallelization should not replace efficient local runs when possible. We use this information to guide the higher expense 100,000 grid cell tests that follow." ] }, { "cell_type": "code", "execution_count": null, "id": "76315c0b-a198-4e95-ae6f-4a3e8bf609a7", "metadata": {}, "outputs": [ { "data": { "image/png": "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wYOlcePGcuutt0a6KkBI6U9i9uzZU9q1aycdO3aUhQsXRrpKQMgcOXJELr/8cuncubNccsklMnv2bAknpsMKk9OnT5v/1FasWGEm9L3ssstkzZo10qRJk0hXDQiJlStXmt+dnj9/vnzyySeRrg4QMgcOHJD8/HzzhzwvL8/8/75jxw5JTU2NdNWAoHM4HHLq1ClJSUmRoqIiE143bNgQtjxDj2uYrFu3Ttq3by9ZWVnSoEED6d+/v3z77beRrhYQMtoDlZaWFulqACHXokULE1pV8+bNpWnTpnL48OFIVwsIiYSEBBNalQZY7f8MZx8owTVA3333nQwYMEAyMzPFZrPJ559/XuGYmTNnSuvWraV+/frSrVs3E1bd9u/fb0Krmy7v27cvbPUHwtnegXht7xs3bjQ9Ujk5OWGoORCZ9q7DBTp16iTZ2dkyfvx482EtXAiuAdLucH2T9M2szMcffyyPPPKI+Xm0TZs2mWP79u0rBw8eDHtdgbqivSOeBKu9ay/rXXfdJW+//XaYag5Epr03atRItmzZIrt27ZIPPvjADJUJGx3jiprRl+2zzz4rty03N9c1evRoz7rD4XBlZma6pkyZYtZXr17tGjRokGf/Qw895Hr//ffDWGsgfO3dbcWKFa4hQ4aEra5ApNr7yZMnXd27d3e9++67Ya0vEKn/391GjRrlWrhwoStc6HENgpKSEvP10A033ODZZrfbzfratWvNem5urmzbts0MDygsLJQlS5aYTzBALLZ3IJ7au/79HzFihPTq1UuGDRsWwdoCoW/v2ruqF96qo0ePmqEHOmNSuCSG7Zli2KFDh8yYpoyMjHLbdX379u1mOTExUV599VW57rrrxOl0yoQJE5hRADHb3pX+R6dfJenXUjoOSqcIuvLKKyNQYyC07X316tXm61WdCss9XnDBggXSoUOHiNQZCGV73717t9x3332ei7LGjBkT1rZOcA2jgQMHmhsQD5YtWxbpKgBhcc0115gOCSAe5ObmyubNmyP2/AwVCAK9mk6nh/AdnKzrOjUKEEto74gntHfEk6YWaO8E1yBITk42E04vX77cs00/fes6X40i1tDeEU9o74gnyRZo7wwVCJBeULVz507Puk4BoV3l5557rrRs2dJMHTF8+HDzM2jajT5t2jQztm/kyJERrTdQG7R3xBPaO+JJodXbe9jmL7A4ndZHXy7f2/Dhwz3HvPnmm66WLVu6kpOTzXQSP/zwQ0TrDNQW7R3xhPaOeLLC4u3dpv9EOjwDAAAA1WGMKwAAACyB4AoAAABLILgCAADAEgiuAAAAsASCKwAAACyB4AoAAABLILgCAADAEgiuAAAAsASCKwBEuXnz5kmjRo2CXu6zzz4rnTt3Dnq5ABAqBFcACMCIESPEZrN5bk2aNJF+/frJ1q1bozYsfvbZZ3LFFVdIenq6pKWlSfv27WXs2LGe/Y8++qgsX748LHUBgGAguAJAgDSoHjhwwNw08CUmJspNN90k0Ujrd/vtt8uQIUNk3bp1snHjRnnppZektLTUc0yDBg1MAAcAqyC4AkCA6tWrJ82bNzc37TWdOHGi7NmzRwoKCjzHPPbYY3LhhRdKSkqKnHfeefLUU095wqJ+5f/cc8/Jli1bPD23uk0dOXJE7r//fsnIyJD69evLJZdcIosXLy73/N98841cfPHFJnC6Q7Q/X375pVx99dUyfvx4adu2ranToEGDZObMmX57f717lN231q1be/Zv27ZN+vfvb55f6zls2DA5dOhQkF5dAKgewRUAaqGwsFDee+89ueCCC8r1WupX8hpGf/75Z3njjTdk9uzZ8vrrr5t92gM6btw485W9u+dWtzmdThMIV69ebcrUx06dOlUSEhI85RYXF8srr7wiCxYskO+++07+/PNP81W/Pxquf/rpJxM2A+Wuk9527txpzu3aa6/1BOtevXrJpZdeKhs2bJCvv/5a8vPz5bbbbqvlKwgANZdYi8cAQFzSHlDtbVRFRUXSokULs81uP9sH8OSTT3qWtbdSw+VHH30kEyZMkHPOOcc8XocYaLB0+/bbb83X+b/88ovpGVXaW+tNe23feustOf/88836gw8+KM8//7zfuo4ZM0ZWrVolHTp0kFatWpmxrn369JE777zT9BxXxl0nl8tlhhjo2NhZs2aZbTNmzDChdfLkyZ7j586dKzk5ObJjxw5PvQEglOhxBYAAXXfddbJ582Zz06DZt29f01O6e/duzzEff/yx+YpeQ6CGVA2y2jtaFS0vOzu7yvCnQw/coVVpaD548KDf41NTU+Wrr74yPadaB62L9vbm5uaa3tuqTJo0SdauXStffPGFCdtKhzesWLHClOO+XXTRRWbf77//XmV5ABAsBFcACJCGQf36XG9du3aVOXPmmJ5XHQ6gNOxpj+aNN95oemJ//PFHeeKJJ6SkpKTKct3hsCpJSUnl1nX8qfaMVkfD7r333mvqumnTJjMMQcO1PzpUQYc26IwEWVlZ5YZGDBgwwBPc3bfffvvNM5wAAEKNoQIAUEsaHnWYwIkTJ8z6mjVrzNfyGlbdvHtjVXJysjgcjnLbOnbsKHv37g35V+46dEF7bjVsV0aDt4ZcHR6gQwu8denSRT799FNThg51AIBIoMcVAAJ06tQpycvLMzcdj6rjSN09kapNmzZmWICOadWvz6dPn256Lr1p8Nu1a5fprdQr8rXMHj16mF5LHVe6dOlSs3/JkiXmAqja0hkDdFztypUrTXna+3v33XebsbK9e/eucLye0+DBg2Xo0KFmCIT7PN0zJowePVoOHz4sd9xxh6xfv96cn85yMHLkyApBHABCheAKAAHSIKljS/XWrVs3E+AWLlwoPXv2NPsHDhwoDz/8sLlwSqeZ0h5YnQ7Lm4ZTncpKx8s2a9ZMPvzwQ7NdezN1+IEGw3bt2pnQWZdAqGH4jz/+kLvuusuMRdWxuBpE9UIwnR7L1/bt280sAfPnz/eco960TiozM9PMeqB10ou89KIv/TED/UUv74vTACCUbK5ABkkBAAAAEcbHZAAAAFgCwRUAAACWQHAFAACAJRBcAQAAYAkEVwAAAFgCwRUAAACWQHAFAACAJRBcAQAAYAkEVwAAAFgCwRUAAACWQHAFAACAJRBcAQAAIFbw/7WDB1lksAAtAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Load the CSV (replace 'your_file.csv' with your actual filename)\n", "scaling_df = pd.read_csv('config/dask_scaling_tests.csv')\n", "\n", "# Filter for grid_cells == 10000\n", "df_10k = scaling_df[scaling_df['grid_cells'] == 10000]\n", "\n", "# Plot: batch_size on x, run_time (s) on y, grouped by workers\n", "plt.figure(figsize=(8,6))\n", "\n", "for workers, group in df_10k.groupby('workers'):\n", " plt.plot(group['batch_size'], group['run_time (s)'], marker='o', label=f'{workers} workers')\n", "\n", "plt.xlabel('Batch Size')\n", "plt.ylabel('Run Time (s)')\n", "plt.title('Performance for 10,000 Grid Cells')\n", "plt.legend(title='Workers')\n", "plt.grid(True)\n", "plt.xscale('log') # Batch size varies a lot, log scale helps visualize\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "111c8471", "metadata": {}, "source": [ "Based on the 10,000 grid cell tests, we skipped individual runs and started directly with batching (100 cells per batch) for the 100,000 grid cell system. Again, the biggest gains came from using at least 2 workers, with improvements tapering beyond ~4 workers. Batch sizes between 100–500 cells were similarly efficient. Locally, this calculation takes on average 1 minute to run, so the use of Dask provides ~35% improvement in run time. We expect even greater benefits at larger scales, and users can apply these scaling results to optimize resource use on their own systems." ] }, { "cell_type": "code", "execution_count": 8, "id": "4bf6e81a", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAq4AAAIjCAYAAADC0ZkAAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAAg0FJREFUeJzt3QecU1X6xvF3OjP03kEEBeyCDexIUVx717W7umtZFStrr+AW29+6rr2LvaCI2BUVUOwiCgLSpcMwPf/Pc2ZuSDLJTAYmk9zJ7+veTXJzJ7mTGzJPzn3PORmBQCBgAAAAQIrLTPYOAAAAAPEguAIAAMAXCK4AAADwBYIrAAAAfIHgCgAAAF8guAIAAMAXCK4AAADwBYIrAAAAfIHgCgAAAF8guAJp4F//+pdtvvnmlpWVZTvssEOyd8f3Hn/8cevXr5/l5ORYq1atkr07SICMjAy79tpra91O22jbZNlss83slFNOCd5+//333f7oEmiMCK5AEjzyyCPuj4u3NGnSxLbccks799xzbfHixfX6XG+//bZdeumltvvuu9vDDz9sN998c70+frr56aefXFDo3bu3PfDAA/bf//43oc+3cOFCu/zyy23fffe15s2b1xpKPv30U9tjjz2soKDAOnXqZH//+99t7dq11bYrLi62yy67zLp06WL5+fm266672sSJE+Per5UrV9qZZ55p7du3t6ZNm7r9+/LLL6Nu++qrr9qAAQPc+7xHjx52zTXXWFlZ2SY9ZiyvvfaaHXTQQdaxY0fLzc21Nm3a2F577WX/+c9/bPXq1ZZsOnaHH364Ozbavw4dOrj9ffHFF5O9a4AvZCd7B4B0dv3111uvXr2sqKjIPv74Y7v33ntt/Pjx9t1337ngUR/effddy8zMtAcffND9ocSmB4+Kigq74447rE+fPgl/vhkzZtgtt9xiW2yxhW277bY2efLkmNtOnz7d9ttvP+vfv7/deuut9vvvv9u///1vmzlzpr355pth2yp8P//883bBBRe4x9aXqZEjR9p7773ngm9N9PsfeOCB9vXXX9sll1xi7dq1s3vuucf22WcfmzZtmns8j5730EMPdff93//9n3377bd244032pIlS9z7fWMeM9Y+nX766e730Ot09tlnW/fu3W3NmjXuNbvyyivdv61JkybF8aqbrV+/3rKz6/dPpAK7/s3rdznrrLOsZ8+etmzZMrdfRxxxhD355JN2/PHH1+tzAo1OAECDe/jhhwP65zdlypSw9aNGjXLrn3rqqU1+jnXr1rnLU089NdC0adNAfamoqAgUFhYG0tV1113njtHSpUvr7TG9YxXN6tWrA8uWLXPXx40b5577vffei7rtAQccEOjcuXNg1apVwXUPPPCA+5kJEyYE133++edu3b/+9a/guvXr1wd69+4dGDRoUK37++yzz7qf1/54lixZEmjVqlXguOOOC9t2q622Cmy//faB0tLS4LorrrgikJGREfjxxx836jGjGTNmjPv5Cy+80L1HIy1YsCAwduzYGh+jvLzcvQ51cc0117jnrY137I488shASUlJtfvfeuutwGuvvRaoq549ewZOPvnk4G29N2p6jwB+R3AFUii4vv766279TTfdFFz3+OOPBwYMGBBo0qRJoHXr1oFjjjkmMHfu3LCf23vvvQNbb711YOrUqYE999wzkJ+fHzj//PPdY0Uuem5RkLj++usDm2++eSA3N9f9ARw9enSgqKgo7LG1/sADD3R/WAcOHBjIy8sL3HbbbcE/kAoc1157baBLly6BZs2aBY444ojAypUr3eNoH9q3b++C8ymnnFLtsR966KHAvvvu67bRPvTv3z9wzz33VHu9vH346KOPAjvvvLPbh169egUeffTRatuuWLEicMEFF7if0WN27do1cOKJJ4YFTe3H1Vdf7YKatunWrVvgkksuqbZ/0fYj8vVUcPHcfffdLqjpMRUgzz77bLc/8RyreNQUXBVWs7Oz3e8Rqri42B2X008/PbhO22RlZYUFXLn55pvd40e+vyIdddRRgY4dO7qgF+rMM88MFBQUBF/H77//3j2eXpdQ8+fPd+tvuOGGOj9mrOCvgKvXtaysLBAv7cM555wTeOKJJ9xx0+v30ksvBe8LPbai999OO+3k3n/6d3PffffFHVz79esXaNOmjfsiEo9436PxBNeff/45cPjhh7vXV/uufxP6HNG/U8BvKBUAUsivv/7qLtu2besub7rpJrvqqqvs6KOPtjPOOMOWLl3qTreqZu+rr74K6xikU44HHHCAHXvssfbnP//Z1fjttNNOrgbziy++sP/9739uu8GDB7tLPd6jjz5qRx55pF100UX2+eef25gxY+zHH3+0l156qdrp6uOOO86d3vzLX/5iffv2Dd6nn1GNpOowf/nlF7d/6rSk8oQVK1a4ziufffaZO4Wrsoirr746+LM6Vbz11lvbwQcf7E7Lqj5Rp3h12vecc84J2wc9tvZVp4NPPvlke+ihh9zp7oEDB7rHENVy7rnnnu53OO2001xd5R9//OFqLHXaXKef9dh6PpVmqJ5Sp9V1+vq2226zn3/+2V5++eWYx+f222+3xx57zL0+2vdmzZrZdttt5+7T73ndddfZ0KFD7W9/+5t7zbTNlClT7JNPPnGvSU3HalPpd1DdqI55KJWHqEOe3i8eXVdNdYsWLcK23WWXXYIlBzrNHot+Xq+tjnHkz+v9ptdRp+u954zcJ9XVduvWrdo+xfOY0ehYqj724osvdh0Q61pK89xzz7n6cr0/1Nkp1us7fPhwV3+rY63XWqf+4zl2KtVQbbTek6pTrs2mvEcjlZSU2IgRI1xN83nnnedqa+fPn2+vv/66e81atmwZ92MBKSHZyRlI5xbXd955x7UEzps3L/DMM88E2rZt61rgfv/998Bvv/3mWsVCW1/l22+/dS1DoevViqfHUwtQJLXGRJYKTJ8+3W1/xhlnhK2/+OKL3fp33323WiujWlxDeS0722yzTdipT53W1WlgnbYOpVPQeqxQ0UoORowY4VqzQnn78OGHH4adRlbr0UUXXRRcpxYqbffiiy9We1zv9LFasDMzM13rWSi9dvrZTz75JFATr4UttAVX+6JWseHDh4e1GN51111uW7Usx3OsNqXF1bsv9DUKbc3s1KlT8LZaJocMGVJtO6+FtLZ90/vptNNOq7b+jTfeCHuvqBQhVguuWs532223Oj9mNHfccYfb5uWXXw5br9ZXHafQJbSMQD+j94J+70iRLa6HHnqoO+sxZ86c4LoffvjB/Rut7U/pK6+84rbRmYp41OU9WluL61dffVWtBAPwM0YVAJJIrXNqwVHrllrf1IKn1ryuXbu6XsZqeVFrq1oNvUUtJurcoU40ofLy8uzUU0+N63nVGURGjRoVtl4tr/LGG2+ErVdLqVptojnppJPCWhPVO11/99W6FErr582bF9abXC21nlWrVrnfb++997ZZs2a526G22mor15rq0eumll9t63nhhRds++23t8MOO6zafnpDFo0bN861YGk4q9DXdciQIe7+yNc1Hu+8845r2VJHp9AWQ7VOq1Uz8vWsy7GKlzoT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KwAAAHyB4AoAAABfILgCAADAFwiuAAAA8AWCKwAAAHyB4AoAAABfILgCAADAFwiuAAAA8AWCKwAAAHyB4AoAAABfSGpw3WyzzSwjI6Pacs4557j7i4qK3PW2bdtas2bN7IgjjrDFixcnc5cBAACQjsF1ypQptnDhwuAyceJEt/6oo45ylxdeeKG99tprNm7cOPvggw9swYIFdvjhhydzlwEAAJAk2ZZE7du3D7s9duxY6927t+299962atUqe/DBB+2pp56yIUOGuPsffvhh69+/v3322We22267JWmvAQAAkHbBNVRJSYk98cQTNmrUKFcuMG3aNCstLbWhQ4cGt+nXr5/16NHDJk+eHDO4FhcXu8WzevVqd6nH0oLE8V5fXuf0wTFPPxzz9MMxT0+lDXzc432elAmuL7/8sq1cudJOOeUUd3vRokWWm5trrVq1CtuuY8eO7r5YxowZY9ddd1219W+//bYVFBQkYM8RySv5QPrgmKcfjnn64Zinp4kNdNwLCwv9FVxVFnDAAQdYly5dNulxRo8e7VptQ1tcu3fvbsOHD7cWLVrUw56ipm9LeoMPGzbMcnJykr07aAAc8/TDMU8/HPP0VNrAx907Q+6L4Dpnzhx755137MUXXwyu69SpkysfUCtsaKurRhXQfbHk5eW5JZJedP7BNQxe6/TDMU8/HPP0wzFPTzkNdNzjfY6UGMdVna46dOhgBx54YHDdwIED3S8xadKk4LoZM2bY3LlzbdCgQUnaUwAAACRL0ltcKyoqXHA9+eSTLTt7w+60bNnSTj/9dHfav02bNu40/3nnnedCKyMKAAAApJ+kB1eVCKgV9bTTTqt232233WaZmZlu4gGNFDBixAi75557krKfAAAASPPgqk5TgUAg6n1NmjSxu+++2y0AAABIbylR4woAAADUhuAKAAAAXyC4AgAAwBcIrgAAAPAFgisAAAB8geAKAAAAX0j6cFgAUN/Ky8vdPNuof3pdNVlMUVGRe50TSbMnZmVlJfQ5APgLwRVAo6ExoRctWmQrV65M9q406te4U6dONm/ePMvIyEj487Vq1co9X0M8F4DUR3AF0Gh4obVDhw5WUFBA2EnQNN1r1661Zs2auZkNExmQCwsLbcmSJe52586dE/ZcAPyD4AqgUdBpay+0tm3bNtm706iDa0lJiZvZMJHBVfLz892lwquOK2UDAOicBaBR8Gpa1dKKxsM7ntQsAxCCK4BGhfKAxoXjCSAUwRUAAAC+QHAFAJ+59tprbYcddkj2bgBAgyO4AkA9uO+++6x58+ZWVlYWXKfe9xqLdJ999gnb9v3333enwH/99dck7CkA+BfBFQDqwb777uuC6tSpU4PrPvroIzcG6eeff+4G7Pe899571qNHD+vdu3edh4gKDcb1OSKDRgsAgFRHcAWAetC3b1831qhaUz26fsghh1ivXr3ss88+C1uvoFtcXGx///vf3VBPGl5qjz32sClTplRrmX3zzTdt4MCBlpeXZx9//HG151bL7eabb27nnnuuC7d63Isvvti6du1qTZs2tV133TVsvx555BE3sP+rr75qW221lXvcuXPnum122WUX9zO6f/fdd7c5c+Yk9HUDgLoguAJAPVEYVWuqR9dVJrD33nsH169fv961wGrbSy+91F544QV79NFH7csvv7Q+ffrYiBEjbPny5WGPe/nll9vYsWPtxx9/tO222y7svm+++cYF3uOPP97uuusuF3QVYCdPnmzPPPOMu/+oo46y/fff32bOnBn8OQ3uf8stt9j//vc/+/77761NmzZ26KGHun3Vz+jnzzzzTHr1A0gpTEAAAPVEYfSCCy5wp/MVUL/66isXBDUGqWpgRYFQLaIKtH/5y19c6+cBBxzg7nvggQds4sSJ9uCDD9oll1wSfNzrr7/ehg0bVu35Pv30U/vTn/5kV1xxhV100UVunVpOH374YXfZpUsXt06tr2+99ZZbf/PNN7t12qd77rnHtt9+e3dbYXnVqlXu8bwShv79+yf8NQOAuiC4AkA9URhdt26dO92/YsUK23LLLa19+/YuvJ566qmuzlWn43VaXyFR4VGn4z3qyKVT9WpZDbXTTjtVey4FU4XZm266yYVlz7fffutqVvXcoRSWQ2cUy83NDWu9VYvrKaec4lp89bhDhw61o48+mqlWATSe4KoPQtVGAQDMnerv1q2bKwtQcFVgFbV8du/e3bWQ6r4hQ4bU6XFVcxpJgViP+/TTT9tpp51mLVq0cOvVQUxTo06bNq3aFKnNmjULm041sgxALbKquVXr7LPPPmtXXnmlawHebbfd6rS/AJASNa7qIHDyySe71gK1DGgqPn1Y6sNZ3/oXLFiQsB0FAL+UC6hVVUvoMFh77bWX+wz94osv3DY6Ha9Wz08++SS4jVpg1VqrDlO1UfB8/fXXXacutZKuWbPGrd9xxx1di+uSJUtckA5dNMJBbfTzo0ePdiF7m222saeeemqjXwsASEpwfemll9xpJ32rz87Otssuu8xefPFFmzBhgivsV3B95513XKD961//akuXLq33HQUAP1AoVc//6dOnB1tcRdfvv/9+KykpcduoFfVvf/ubq2VVC+cPP/zgal7Vaer000+P67n0GG+88Yb7XFadrFpb9Vl9wgkn2EknneQ+p2fPnu3C8pgxY9y2sWg7BVbV4Gokgbffftt15qLOFYDvSgX++c9/2m233eY+GDMzq2dd1UHJ/Pnz7f/+7//siSeesAsvvLD+9xYAUpxCqTpm9evXzzp27BgWXNUq6g2bJRopQOOnnnjiie4+1bKqQaB169ZxP59O/6slV62uBx54oI0fP96d8r/xxhtdhy19Lrdr186d7lfHq1h0Bu2nn35yIxwsW7bM7eM555xjZ5111ia+IgBQfzICGvSvEVu9erW1bNnSdYTwasCQGDrNqT+aI0eOdKUkaPxS6Zir45NaDTVmqk6fIzEUtPW5qs/TaA0Z9Y3jmnyp9O8cjfe4x5vXNvlTR7VUOiWmjggAAABAotQ5uGrYFY0x6IVWnf4aMGCA6zEbOjMLAAAAkNTg+vzzzwcHrH7ttdfcKRzVRammVYNgAwAAACkRXP/444/gkCqqfdBUgt6IAxr4GgAAAEiJ4Kpeshq2RWUCGsLFm4ZQQ7hEDnYNAAAAJG3mLE1b6E0DqFlXNC2gfP755274FwAAACAlguu1117rZlOZN2+eKxPwpnxVa+vll1+eiH0EAAAA6h5c5cgjj6y2TlPBAgAAAEmtcX3mmWfifkC1xIbOvQ0AAAA0WHC999573XzVmvr1xx9/rHa/ZjnQCAPHH3+8G9NV0wUCAPxts802s9tvvz3ZuwEAdQuuH3zwgd1yyy02ceJEV9+qqbi22GIL23bbba1bt27Wtm1bNxxWjx497LvvvrODDz44nocFgJRTXhGwyb8us1emz3eXup1IH374oR100EHWpUsX1+H15ZdfTujzAUBa1LgqjGrROK4ff/yxzZkzx9avX2/t2rWzHXfc0S0NMW81ACTKW98ttOte+8EWrioKruvcsoldc9BWtv82nRPynOvWrXOTuujL/+GHH26poKSkxHJzc33zuADSR52TpoLqoYceaueff74bReCMM86wgQMHEloB+D60/u2JL8NCqyxaVeTW6/5EOOCAA+zGG2+0ww47LK7tVZqlUVymTp3qbldUVFibNm1st912C27zxBNPuGm4PZocZsiQIZafn+/OkJ155pm2du3a4P2nnHKK+1y/6aabXMtv3759oz73//73P/dcOgsnOsOm/W/WrJkb4/vEE090jRueffbZx84991w3Vbj+dowYMcICgYAbnUZn6DQqjZ7v73//+0a8cgDSEWkTQKOlkFRYUlbrsqao1K559XuLVhTgrbv21R/cdvE8np43UVq2bGk77LCDvf/++8FQqhKDr776KhhGFSz33nvvYIuuAmPr1q1typQpNm7cOHvnnXdcoAw1adIkmzFjhisJe/3116s9r/o4qLFCE8/osVeuXOnCsM62KURr/eLFi90436EeffRR18qqTrv33XefvfDCC3bbbbfZ/fffbzNnznSlESo7A4CEDYcFAH6wvrTctrp6wiY/jmLootVFtu21b8e1/Q/Xj7CC3MR9vKolU8H14osvdpeawfCnn35yZVz777+/W3fppZe6bZ966ikrKiqyxx57zJo2berW3XXXXa6uVn0X1FIquk8tqtFO5V922WX2+OOPu0CsjrqrV6+2u+++24XWm2++ObjdQw895Fp6f/75ZzcVuKg/hEKv54033nDThmvympycHNfyussuuyTstQLQuNDiCgA+oxZPhVRNva0wqSDrhdkFCxbYL7/84m6LRoJRDa0XWmX33Xd3JQZqYfWo1TNaaP3Pf/5jDzzwgHu+rbfeOrj+66+/tvfee8+VCXiLN3vir7/+GtxOpWShNHGN+kdsvvnm9pe//MVeeuklKysrq+dXCEBjRYsrgEYrPyfLtX7W5ovZy+2Uh6fUut0jp+5su/RqE9fzJtJee+1la9assS+//NKNSqBWT7Vijh071oVU1Y2qpbMuQoNtqD333NO1kj733HNhsyOqLMFrtY2kKcFjPa5aZBWYVa6gsoSzzz7b/vWvf7kArhZYAEhIcFXv0NmzZ1vv3r0tO5v8CyD1qPYznlP2e27R3o0eoI5Y0apTM8ysU8smbrusTN1KrlatWtl2223nTvkr7Kmls0OHDnbMMce4+lSvvlV0av+RRx5xta5eiFS9qTrUxuqEFUqn8VUPqxIEfdaPGjXKrdeY3S+++KIb67WufwPUSUyhV8s555zj9l+1unpMAKjXUoHCwkI7/fTTraCgwJ02mjt3rlt/3nnnuW/7AOA3CqMa8koiY6l3W/cnIrSq5XL69OluETUI6Lr32RqLSgGefPLJYEhVb3+F1GeffTYsuJ5wwgnWpEkTNy23RgHQ6X19XmsEAK++tTaDBw92k8xcd911dscdd7h1aildvny5HXfcca7Tl8oDJkyYYKeeeqorYYhFIfrBBx90+zJr1iw3AoKCbM+ePePaFwDprc7BdfTo0a62SbVU+jD0qNBeH5gA4Ecap/XePw9wLauhdFvrEzWOq3rke2Nhi1o0df3qq6+u8ecUThUQvVpW0fXIdWpkUKBUyNx5553tyCOPtP3228+11tbFHnvs4UoGrrrqKvvvf//ryhHUcqvnGz58uKuR1bBXag2uaXhE3a+aWdXZqtVYJQOvvfaaG6YLAGqTEajjuC36VqyAqjEDmzdv7kKsiuzVGUCnedTbNJVofzR8jMY+1IxfSJzS0lLXKjNy5Ehq1dJEKh1z9ZxXa2WvXr3CvlTXlWbKUs3rkjVF1qF5E1fTmgrlAalCnbr0uarP04YYv7u+jisax79zNN7jHm9eq3Nx6tKlS10tVSTVT6meDAD8TCF1UG9a/wAgFdX56/JOO+3kThd5vLCq8f8GDRpUv3sHAAAAbGyLq4Zd0RR/P/zwgxt7T4X6uv7pp58GpwEEAAAAkt7iqgJ99XhVaFUx/ttvv+1KByZPnlxtoGkAAACgvmzUAKwau1W9QgEAAICGstEzByxZssQt6mEaSsObAAAAAEkPrtOmTXMDWWv+68iRtNRRq6aBpwEAAIAGC66nnXaabbnllm7mE826whBYAAAASMngqin6XnjhBevTp09i9ggAAACoj1EFNFWgZssCADRuOqP28ssvJ3s3AGDjW1w10YBqXL/77jvbZpttqk0DdvDBB9f1IQEgdVSUm8351GztYrNmHc16DjbLzErY040ZM8ZefPFF++mnnyw/P98GDx5st9xyi/Xt2zdhzwkAaRNcNV7rJ598Ym+++Wa1++icBcDXfnjV7K3LzFYv2LCuRRez/W8x2yoxX8o1ccs555xjO++8sxsf+x//+IcNHz7cTezStGlTS4aSkhLLzc31zeMCSB91LhU477zz7M9//rMtXLjQDYUVuhBaAfg6tD53UnholdULK9fr/gR466237JRTTrGtt97att9+e3vkkUds7ty5bgSXaHS2KzMz05YuXepuL1++3N0+9thjg9vceOONbrKY0HC8yy67WF5ennXu3Nkuv/xyF5I9++yzj5177rl2wQUXWLt27WzEiBFRn/uaa66xrl27un2Qjz/+2Pbcc0/XUty9e3f7+9//buvWrQtuv9lmm9kNN9xgJ510krVo0cLOPPNMF171XNqPJk2aWM+ePV2rMwAkJLguW7bMLrzwQjeiAACkNA3ZV7Ku9qVotdmbl+oHoj1I5YVaYrVdPI8XMVRgXaxatcpdtmnTJur9Crht27YNTrH90Ucfhd0WXVcYlfnz59vIkSNdi676J9x7771uVBiF21CPPvqoaw3VGbX77rsv4mUMuEaLxx57zD22ysR+/fVX23///e2II46wb775xp599lkXZBVKQ/373/92gfyrr76yq666yu6880579dVX7bnnnrMZM2bYk08+6QIuACSkVODwww+39957z82eBQAprbTQ7OYu9fBAgcqW2LHd49v8HwvMcut+ml9nrtTqufvuu7twGI1Ksvbaay97//337cgjj3SXp556qut/oDpZfTZ/+umndumlCuJm99xzj2sNveuuu9zP9uvXzxYsWGCXXXaZXX311a61VrbYYgv75z//We351DKrs2wKngqmaildvXq1jR071k444QS3v97PK5TuvffeLhyrNVWGDBliF110UfDx1JqsbdUirP1RiysAJCy4agzX0aNHuw+wbbfdtlrnLJ0qAgDUnWpddRpen681UTj873//666rBfTmm2+2n3/+2YVYlQ6Ulpa68CuaLGbQoEFhY27rvrVr19rvv/9uPXr0cOsGDhwY9bl0hk0lBp999pkrI/BmS1Qrqxa1mIa2zOr+2bNnW//+/d26nXbaKezxVBYxbNgw1/lMLbZ/+tOfXE0vACRsVIFmzZq5D8vQU1OiD0aCK4CUkVNQ2fpZG40i8OSRtW93wvOVowzE87x1pFPsr7/+un344YfWrVu3GrdVGYBaOmfOnOk6can1Uq2tCq4rVqxwYbGgoG77EKsjmELm008/bRMmTHAtrB4F37POOivqZ74XhqM97oABA1ywVQffd955x44++mgbOnSoPf/883XaXwDpqc7BVR849Un1VzplpQ+xwsJCN7HBww8/HPyWrm/w6hDwwAMP2MqVK11LgU5D6VQTANRIrYzxnLLvPaRy9AB1xIpa55pReb+2q+ehsbz60ZdeeskFz169etX6Mzrb1bp1a1enusMOO7jGBIVZDaOl4OrVt4paPjVpjJ7Ha3VVHWvz5s1rDcjeEIcHHXSQHX/88ZaVleWCpuy4444uNG/MZDTqqHXMMce4ReUOanlVS3Gsul4A2OjOWfVJH7AKoio3UHDVh+B//vMf94HsUc2V6qbUWeDzzz93397V47WoqCiZuw6gMVEY1ZBXTuQ01lW39x+bkPFcVR7wxBNP2FNPPeXC5KJFi9yyfv36mD/j1bnqNL0XUrfbbjsrLi62SZMmuVICz9lnn23z5s1z4Vitsq+88oprDBg1alSwvrU2hx12mD3++OOultZrGVUNrWpp1VI8ffp01/qrx47snBXp1ltvdS242heVN4wbN846depkrVq1ivMVA5DO4mpx1QechjRRaNT12j6U4qXWAXUaUAurJ7S1QS0Et99+u1155ZV2yCGHuHXq1aoRDTSbS+jwLwCwSTRO69GPxRjHdWzCxnHVGSQJbSUVfS6qHjQWhVN9Dno/pxCqMPvGG28E61tFw1eNHz/eLrnkEte7X62ap59+uvtcrQu1jKp+VRPQqL5WZQMqF7viiivckFj6vFbHMLWi1kThXA0SCrpqwdVoB9q/eEM0gPSWEdCnTS323XdfdxpL34h1PeaDZWTYu+++G/eTb7XVVq71VB0E9AGoD1i1DvzlL39x98+aNct9EKo3q06HhX5g6/Ydd9xR7THV4qDFo96vCsd//PGHOz2FxFGHkIkTJ7qauMhOe2icUumY6yyMWhY1tJLXo32jZ86aO9ls7SKzZp3MegxK6MxZfqM/GWvWrHEBNLTDVyKP62+//eY+xzfpuKJR/DtH4z3uymvqAKohAWvKa3EFV6+lU9+k1bu0vngfQmrFPeqoo2zKlCl2/vnnu7IAfavXaSi1HGjoFg3B4lGNlT4wNW5gpGuvvdauu+66aut1Gq6unRUA+Ed2drY75ayAw+xMjYcmLNAXEpVPhE6aAKBxUT8n1dLXW3DVKR3NltWhQ4d620n9cVEnLAVUj3qoKsBqatmNCa60uCYP38rTT6NscUWNaHFNP6n07xwNJ1VbXOMeVSDOfFsnCqMqFwjl9YAVtZ7I4sWLw4KrboeWDoRSi3C0VmG96PyDaxi81uknFY65ppxWkFKtJPWSieON4+q91omm59BzpcJ7LN1xDNJTTgMd93ifo06fOvX97VqtqZryL5R6mXozqaijlsKresmGJnKNLqABtQEAAJA+6jSO63777efqyGry5Zdfxv14mpFl8ODBbtYXnf7/4osvXG9Vb0YYBWUNsq2xCjVuq4Ks5rru0qWLHXrooXXZdQAAAKRTcNUIABrour5oGBSNVqApZK+//noXTDX8VejsLBorcN26dXbmmWe6CQg0Q8xbb71FrRMAAECaqVNw1TiA9dk5SzRPtZZY1OqqUKsFAAAA6SvuGteG6D0KAAAAbHJwTcSoAgAAAEC9B9fZs2db+/bt435gAIC/6UybppUFAN8FVw1RRbkAgMauvKLcpiyaYuNnjXeXup1I9957r2233XZuwG0tGurvzTffTOhzAkBadM4CgMbsnTnv2NgvxtriwsXBdR0LOtrlu1xuQ3sOTchzduvWzcaOHeuG/FNJ1qOPPmqHHHKIffXVV7b11ltbsqZZTcS0uYl6XADpg+llAKAqtI56f1RYaJUlhUvcet2fCAcddJCNHDnSBdctt9zSbrrpJjfs4GeffRZ1+++++87NJrV06VJ3e/ny5e72scceG9xGY19r6EDPBx98YLvssoubVVCzEF5++eVWVlYWvH+fffaxc889142brSkXNfRhNNdcc4117drV7YN8/PHHtueee1p+fr6bklVTdmv4Qo+m373hhhvspJNOcq3JGtZQ4VXPpf3QsIY6mzdmzJh6eCUBpAOCK4BGSy2YhaWFtS5ritfYmC/GWMCqd0INVP2nllhtF8/jbWxnVk1b+8wzz7jwF2t2QLXCtm3b1oVR+eijj8Jui64rjMr8+fNdMNa42V9//bUrTXjwwQdduA2lll61hn7yySd23333VXsdzzvvPHvsscfcY2+zzTb266+/2v77729HHHGEffPNN/bss8+6IKtQGurf//63bb/99q4FWRPI3Hnnnfbqq6/ac88952ZOfPLJJ13ABYCElQpoIgDNcrVkyZLgvNUefbMGgFSwvmy97frUrvXyWGqJHfzM4Li2/fz4z60gpyDux/72229dUC0qKnKtrZqYZauttoq6rfoa7LXXXvb+++/bkUce6S5PPfVU+9///mc//fST9e7d2z799FM3eYvcc889rjX0rrvucj/br18/W7Bg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+++37bbbzpKtpKTEfc775XGBuJSXVraMVgumVbcL/6j9MXTKPlrPfHc6v3NKtUw2VnFP+aqJBe69917bbLPN7LfffrOjjjrKzjzzTNcqcOutt7p1l12mqcKQVsXm4y9J+enhgHhD6/zzLwgLrVK2eLFbr/sTZe3atXbCCSfYAw88YK1bt65x2++++871LVi6dKm7vXz5cnf72GOPDW5z44032h577BG8/cEHH9guu+xieXl51rlzZ7v88sutrGzDac199tnHzj33XLvgggusXbt2NmLEiKjPfc0111jXrl3dPsjHH39se+65p+Xn51v37t3t73//u61bt6FVSn8vbrjhBjvppJPcsIn6m6HwqufSfjRp0sR69uxpY8aM2YRXDwg5nb9msdm8L8y+GWf2wb/MXjnH7JE/md2+rdmNHc3u3MHssUPMXjvf7ONbzb57wWz+1A2htUkrs87bm/U/2GzweWYH/sfshBfMzp1qdsVis4t+NDvtLbPD7zfbd7TZDsebbbZ7ZccpQmtqtbiOGzfOHnvsMTv44IPdh5ZaBfTB9/XXX7s6KFQVZ2sqNBVhq8haY52l6htZ/8B1WkQDE6s3oy7dousrY6xfFb6+rKi2J6ksVp90g1n/g8zabWHWpEUD/YJA5agngThq71UesPjGmyr/XVR/EDcSzOKbbramgwbFVTaQkZ9fp8/Fc845xw488EAbOnSoC5012Xrrra1t27YujB555JH20UcfBW97dF1hVObPn28jR450k8ToM/ynn36yv/zlLy406iya59FHH7W//e1v9sknn0R5CQIulL7++uvusTt06GC//vqr7b///m5/deZNQVqBVMvDDz8c/Nl///vfruFDodcbmebVV1+15557znr06GHz5s1zCxAX/S2K1TNfl2W1/HvPygtvJY1sOc1v1VC/CRIdXH///XcbOHCgu77NNtu4b+4qDSC0htd5Vh8+IkF1ngrJ8YTLyCW4frX+WluD+OS2ysU7zdJ+S7N2fUMu+5o1bU/tD+qdQuuMAQPr4YEqW15/3nmXuDbv++U0yygoiGvbZ555xr788ktXKhAPfebutdde9v7777vgqstTTz3V/ve//7lQqqm3P/30U1fOJffcc49rDb3rrrvcz/br188WLFjgzpApUKq1VrbYYgvXTyGSGij+/Oc/u1kT1cKqllLNlqh6XLUS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ydxlAAAApOM4rgcddFDY7Ztuusm1wn722Wcu1D744IP21FNPuUArDz/8sPXv39/dv9tuuyVprwEAAJDWExCUl5e7ltV169a5kgG1wpaWltrQoUOD2/Tr18969OhhkydPjhlci4uL3eJZvXq1u9RjaUHieK8vr3P64JinH455+uGYp6fSBj7u8T5P0oPrt99+64Kq6llVx/rSSy/ZVlttZdOnT7fc3Fxr1apV2PYdO3a0RYsWxXy8MWPG2HXXXVdt/dtvv20FBQUJ+R0QbuLEicneBTQwjnn64ZinH455eprYQMe9sLDQH8G1b9++LqSuWrXKnn/+eTv55JNdPevGGj16tI0aNSqsxbV79+42fPhw1wEMif22pDf4sGHDLCcnJ9m7gwbAMU8/HPP0wzFPT6UNfNy9M+QpH1zVqtqnTx93feDAgTZlyhS744477JhjjrGSkhJbuXJlWKurRhXo1KlTzMfLy8tzSyS96PyDaxi81umHY55+OObph2OennIa6LjH+xwpN45rRUWFq1FViNUvMWnSpOB9M2bMsLlz57rSAgAAAKSXpLa46rT+AQcc4DpcrVmzxo0g8P7779uECROsZcuWdvrpp7vT/m3atHGn+c877zwXWusyokAgEKhTEzQ27bSCalT0WvOtPD1wzNMPxzz9cMzTU2kDH3cvp3m5LSWD65IlS+ykk06yhQsXuqCqyQgUWlVPIbfddptlZma6iQfUCjtixAi755576vQcCsSiOlcAAACkLuU2ZcJYMgK1RVufU+mBJi5o3ry5ZWRkJHt3GjWvI9y8efPoCJcmOObph2Oefjjm6Wl1Ax93xVGF1i5durhGy5TtnJVo+uU1mQEajjeFL9IHxzz9cMzTD8c8PbVowONeU0trynbOAgAAAKIhuAIAAMAXCK6oNxo/95prrok6ji4aJ455+uGYpx+OeXrKS9Hj3ug7ZwEAAKBxoMUVAAAAvkBwBQAAgC8QXAEAAOALBFcAAAD4AsEVNRozZoztvPPObuaxDh062KGHHmozZswI26aoqMjOOecca9u2rTVr1sxN0bt48eKwbebOnWsHHnigFRQUuMe55JJLrKysrIF/G2yMsWPHulnnLrjgguA6jnnjM3/+fPvzn//sjml+fr5tu+22NnXq1OD96sd79dVXW+fOnd39Q4cOtZkzZ4Y9xvLly+2EE05wg5W3atXKTj/9dFu7dm0SfhvUpry83K666irr1auXO569e/e2G264IWyeeI65/3344Yd20EEHudmo9Dn+8ssvh91fX8f4m2++sT333NOaNGniZtv65z//mbhfSqMKALGMGDEi8PDDDwe+++67wPTp0wMjR44M9OjRI7B27drgNn/9618D3bt3D0yaNCkwderUwG677RYYPHhw8P6ysrLANttsExg6dGjgq6++CowfPz7Qrl27wOjRo5P0WyFeX3zxRWCzzTYLbLfddoHzzz8/uJ5j3rgsX7480LNnz8App5wS+PzzzwOzZs0KTJgwIfDLL78Etxk7dmygZcuWgZdffjnw9ddfBw4++OBAr169AuvXrw9us//++we23377wGeffRb46KOPAn369Akcd9xxSfqtUJObbrop0LZt28Drr78emD17dmDcuHGBZs2aBe64447gNhxz/xs/fnzgiiuuCLz44ov6RhJ46aWXwu6vj2O8atWqQMeOHQMnnHCCywpPP/10ID8/P3D//fcn5HciuKJOlixZ4t78H3zwgbu9cuXKQE5OjvvQ8/z4449um8mTJwf/4WRmZgYWLVoU3Obee+8NtGjRIlBcXJyE3wLxWLNmTWCLLbYITJw4MbD33nsHgyvHvPG57LLLAnvssUfM+ysqKgKdOnUK/Otf/wqu0/sgLy/P/ZGSH374wb0HpkyZEtzmzTffDGRkZATmz5+f4N8AdXXggQcGTjvttLB1hx9+uAsfwjFvfCwiuNbXMb7nnnsCrVu3Dvts12dK3759E/J7UCqAOlm1apW7bNOmjbucNm2alZaWutMLnn79+lmPHj1s8uTJ7rYuddqxY8eOwW1GjBhhq1evtu+//77BfwfER6UAOtUfemyFY974vPrqq7bTTjvZUUcd5co6dtxxR3vggQeC98+ePdsWLVoUdsw1p/iuu+4adsx1GlGP49H2mZmZ9vnnnzfwb4TaDB482CZNmmQ///yzu/3111/bxx9/bAcccIC7zTFv/GbX0zHWNnvttZfl5uaGfd6rrHDFihX1vt/Z9f6IaLQqKipcnePuu+9u22yzjVunN73erHpjh1Jg0X3eNqEBxrvfuw+p55lnnrEvv/zSpkyZUu0+jnnjM2vWLLv33ntt1KhR9o9//MMd97///e/uOJ988snBYxbtmIYec4XeUNnZ2e5LLsc89Vx++eXui6S+dGZlZbma15tuusnVMgrHvPFbVE/HWJeqlY58DO++1q1b1+t+E1xRpxa47777zn0rR+M1b948O//8823ixImu0B7p8aVULSo333yzu60WV/1bv++++1xwRePz3HPP2ZNPPmlPPfWUbb311jZ9+nTXMKFOPBxzpDJKBRCXc889115//XV77733rFu3bsH1nTp1spKSElu5cmXY9uphrvu8bSJ7nHu3vW2QOlQKsGTJEhswYID7Zq3lgw8+sDvvvNNd1zdpjnnjoh7FW221Vdi6/v37u5EhQo9ZtGMaesz1vgmlUSTUI5ljnno0yodaXY899lhX1nPiiSfahRde6EaSEY5549epno5xQ3/eE1xRI9VzK7S+9NJL9u6771Y7HTBw4EDLyclxtVIe1bXoD96gQYPcbV1+++23YW9+teZpaI3IP5ZIvv32288dL7XAeIta43QK0bvOMW9cVP4TOcydah979uzpruvfvf4AhR5znWZWjVvoMdeXGX3x8egzQ625qplDaiksLHR1iqFUMqDjJRzzxq9XPR1jbaNht9T3IfTzvm/fvvVeJuAkpMsXGo2//e1vbqiM999/P7Bw4cLgUlhYGNxGQyNpiKx3333XDY00aNAgt0QOjTR8+HA3pNZbb70VaN++PUMj+UjoqALCMW98w55lZ2e7IZJmzpwZePLJJwMFBQWBJ554ImzYnFatWgVeeeWVwDfffBM45JBDog6bs+OOO7ohtT7++GM3KgVDI6Wmk08+OdC1a9fgcFgaLklD1l166aXBbTjmjWN0mK+++sotiny33nqruz5nzpx6O8YaiUDDYZ144oluOKxnnnnGfX4wHBaSQm/0aIvGdvXoDX722We74TD0Zj3ssMNcuA3122+/BQ444AA3tps+HC+66KJAaWlpEn4j1Edw5Zg3Pq+99pr7sqGhcPr16xf473//G3a/hs656qqr3B8obbPffvsFZsyYEbbNsmXL3B80jQeqoc9OPfVU94cTqWf16tXu37S+gDZp0iSw+eabu/E+Q4c04pj733vvvRf1b7i+uNTnMdYYsBpST4+hL0QKxImSof+r/3ZcAAAAoH5R4woAAABfILgCAADAFwiuAAAA8AWCKwAAAHyB4AoAAABfILgCAADAFwiuAAAA8AWCKwAAAHyB4AoAKe6RRx6xVq1a1fvjXnvttbbDDjvU++MCQKIQXAEgDqeccoplZGQEl7Zt29r+++9v33zzTcqGxZdeesl22203a9mypTVv3ty23npru+CCC4L3X3zxxTZp0qQG2RcAqA8EVwCIk4LqwoUL3aLAl52dbX/6058sFWn/jjnmGDviiCPsiy++sGnTptlNN91kpaWlwW2aNWvmAjgA+AXBFQDilJeXZ506dXKLWk0vv/xymzdvni1dujS4zWWXXWZbbrmlFRQU2Oabb25XXXVVMCzqlP91111nX3/9dbDlVutk5cqVdtZZZ1nHjh2tSZMmts0229jrr78e9vwTJkyw/v37u8DphehYXnvtNdt9993tkksusb59+7p9OvTQQ+3uu++O2fob2qLsLZtttlnw/u+++84OOOAA9/zazxNPPNH++OOPenp1AaB2BFcA2Ahr1661J554wvr06RPWaqlT8gqjP/zwg91xxx32wAMP2G233ebuUwvoRRdd5E7Zey23WldRUeEC4SeffOIeUz87duxYy8rKCj5uYWGh/fvf/7bHH3/cPvzwQ5s7d6471R+LwvX333/vwma8vH3S8ssvv7jfba+99goG6yFDhtiOO+5oU6dOtbfeessWL15sRx999Ea+ggBQd9kb8TMAkJbUAqrWRlm3bp117tzZrcvM3NAGcOWVVwavq7VS4fKZZ56xSy+91PLz893Pq8RAwdLz9ttvu9P5P/74o2sZFbXWhlKr7X333We9e/d2t88991y7/vrrY+7reeedZx999JFtu+221rNnT1frOnz4cDvhhBNcy3E03j4FAgFXYqDa2Pvvv9+tu+uuu1xovfnmm4PbP/TQQ9a9e3f7+eefg/sNAIlEiysAxGnfffe16dOnu0VBc8SIEa6ldM6cOcFtnn32WXeKXiFQIVVBVq2jNdHjdevWrcbwp9IDL7SKQvOSJUtibt+0aVN74403XMup9kH7otbeXXbZxbXe1uQf//iHTZ482V555RUXtkXlDe+99557HG/p16+fu+/XX3+t8fEAoL4QXAEgTgqDOn2uZeedd7b//e9/ruVV5QCisKcWzZEjR7qW2K+++squuOIKKykpqfFxvXBYk5ycnLDbqj9Vy2htFHbPOOMMt69ffvmlK0NQuI5FpQoqbdCIBF27dg0rjTjooIOCwd1bZs6cGSwnAIBEo1QAADaSwqPKBNavX+9uf/rpp+60vMKqJ7Q1VnJzc628vDxs3XbbbWe///57wk+5q3RBLbcK29EoeCvkqjxApQWhBgwYYC+88IJ7DJU6AEAy0OIKAHEqLi62RYsWuUX1qKoj9VoiZYsttnBlAapp1enzO++807VchlLwmz17tmutVI98Pebee+/tWi1VVzpx4kR3/5tvvuk6QG0sjRigutr333/fPZ5af0877TRXKzts2LBq2+t3Ouyww+zYY491JRDe7+mNmHDOOefY8uXL7bjjjrMpU6a430+jHJx66qnVgjgAJArBFQDipCCp2lItu+66qwtw48aNs3322cfdf/DBB9uFF17oOk5pmCm1wGo4rFAKpxrKSvWy7du3t6efftqtV2umyg8UDLfaaisXOjclECoMz5o1y0466SRXi6paXAVRdQTT8FiRfvrpJzdKwKOPPhr8HbVon6RLly5u1APtkzp5qdOXJjPQjF6hndMAIJEyAvEUSQEAAABJxtdkAAAA+ALBFQAAAL5AcAUAAIAvEFwBAADgCwRXAAAA+ALBFQAAAL5AcAUAAIAvEFwBAADgCwRXAAAA+ALBFQAAAL5AcAUAAID5wf8DzRdFBET9z8sAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Filter for grid_cells == 10000\n", "df_100k = scaling_df[scaling_df['grid_cells'] == 100000]\n", "\n", "# Plot: batch_size on x, run_time (s) on y, grouped by workers\n", "plt.figure(figsize=(8,6))\n", "\n", "for workers, group in df_100k.groupby('workers'):\n", " plt.plot(group['batch_size'], group['run_time (s)'], marker='o', label=f'{workers} workers')\n", "\n", "plt.xlabel('Batch Size')\n", "plt.ylabel('Run Time (s)')\n", "plt.title('Performance for 100,000 Grid Cells')\n", "plt.legend(title='Workers')\n", "plt.grid(True)\n", "#plt.xscale('log') # Batch size varies a lot, log scale helps visualize\n", "plt.show()" ] } ], "metadata": { "kernelspec": { "display_name": "mb-dask", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.11.13" } }, "nbformat": 4, "nbformat_minor": 5 }